//package com.huawei.spare.part.replace.views.prepare.download;
//
//import com.huawei.spare.part.replace.models.DownloadTask;
//import com.huawei.spare.part.replace.views.widgets.toast.Toast;
//import io.reactivex.rxjavafx.observables.JavaFxObservable;
//import javafx.beans.binding.StringBinding;
//import javafx.scene.control.Button;
//import javafx.scene.control.TableCell;
//import javafx.scene.input.Clipboard;
//import javafx.scene.input.ClipboardContent;
//import javafx.scene.input.MouseEvent;
//import javafx.scene.layout.HBox;
//
//import java.util.concurrent.TimeUnit;
//
//public class DownloadActionTableCell extends TableCell<DownloadTask, Void> {
//
//    private final Button download = new Button(getString("button.download"));
//    private final Button upload = new Button(getString("button.upload"));
//    private final Button copy = new Button(getString("button.copy"));
//    private final HBox actionBox = new HBox();
//
//    public DownloadActionTableCell(Func) {
//        actionBox.getStyleClass().add("action-box");
//        JavaFxObservable.eventsOf(upload, MouseEvent.MOUSE_CLICKED)
//                .throttleFirst(500, TimeUnit.MILLISECONDS)
//                .subscribe((e) -> {
//                    DownloadTask downloadTask = getTableView().getItems().get(getIndex());
//                    uploadPackage(downloadTask);
//                });
//        JavaFxObservable.eventsOf(download, MouseEvent.MOUSE_CLICKED)
//                .throttleFirst(500, TimeUnit.MILLISECONDS)
//                .subscribe((e) -> {
//                    DownloadTask downloadTask = getTableView().getItems().get(getIndex());
//                    downloadPackage(downloadTask);
//                });
//        JavaFxObservable.eventsOf(copy, MouseEvent.MOUSE_CLICKED)
//                .throttleFirst(500, TimeUnit.MILLISECONDS)
//                .subscribe((e) -> {
//                    DownloadTask downloadTask = getTableView().getItems().get(getIndex());
//                    final Clipboard clipboard = Clipboard.getSystemClipboard();
//                    final ClipboardContent content = new ClipboardContent();
//                    content.putString(downloadTask.urlProperty().get());
//                    clipboard.setContent(content);
//                    Toast.of(root(), getString("download.copied.to.clipboard")).show();
//                });
//    }
//
//    @Override
//    protected void updateItem(Void item, boolean empty) {
//        super.updateItem(item, empty);
//        if (!empty) {
//            final DownloadTask task = getTableView().getItems().get(getIndex());
//            if (!task.installPackageProperty().get().getIsLimit()) {
//                download.disableProperty().bind(task.downloadingProperty());
//                download.textProperty().bind(new StringBinding() {
//                    {
//                        bind(task.progressProperty());
//                    }
//
//                    @Override
//                    protected String computeValue() {
//                        final double progress = task.progressProperty().get();
//                        if (progress < 1 && progress > 0) {
//                            return getString("button.downloading");
//                        } else {
//                            return getString("button.download");
//                        }
//                    }
//                });
//                actionBox.getChildren().add(download);
//            }
//            actionBox.getChildren().add(upload);
//            actionBox.getChildren().add(copy);
//        }
//        setGraphic(empty ? null : actionBox);
//    }
//
//
//}
